home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / fdimg / oh!.2hd / OH!DEN_B.LZH / TOOLS / CDC / CDCSXSRC.LZH / LBSRC.LZH / DRAWWIN.HAS < prev    next >
Text File  |  1995-03-20  |  9KB  |  466 lines

  1. *    ウィンドウ描画とコントロール生成廃棄
  2. *    1995.03.10
  3. *    You Utzse@電脳魔術団@Mankaiseisakujo /1993-1995
  4.  
  5.  
  6.     .include    DOSCALL.MAC
  7.     .include    SXCALL.MAC
  8.     .include    SXCALL.H
  9.     .include    YOU200.MAC
  10.     .include    HASMACRO.MAC
  11.     .include    WORK.INC
  12.     .include    FLAG.INC
  13.     .include    CDC.MAC
  14.  
  15.     .xref    ScrProc
  16.     .xref    FillHdl
  17.  
  18. ttllngs    =    50
  19. *==============================================*
  20. DrawWin::
  21.     Xpea    winPtr(a5)
  22.     SX    __CMDraw,4
  23.  
  24.     SX    __EMMSLoc,0
  25.     move.l    d0,-(sp)
  26.     move.l    TtlHdl(a5),-(sp)
  27. *    pea    TtlHdl(a5)        *疑似ハンドル
  28.     move.l    Ttlargc(a5),-(sp)
  29.     pea.l    Sc1work(a5)
  30.     move.w    #1,-(sp)
  31.     SXSUB    ScrProc,18
  32. *****
  33.     move.l    #0*$10000+158,-(sp)
  34.     SX    __GMMove,4
  35.  
  36.     move.w    #G_FORE*$100+G_PSET,-(sp)
  37.     SX    __GMPenMode,2
  38.  
  39.     move.w    #G_WHITE,-(sp)
  40.     SX    __GMForeColor,2
  41.  
  42.     move.l    #WIN_X*$10000+158,-(sp)
  43.     SX    __GMLine,4
  44.  
  45.     move.l    #0*$10000+174,-(sp)
  46.     SX    __GMMove,4
  47.  
  48.     move.l    #WIN_X*$10000+174,-(sp)
  49.     SX    __GMLine,4
  50.  
  51.     move.l    #0*$10000+12,-(sp)
  52.     SX    __GMMove,4
  53.  
  54.     move.l    #WIN_X*$10000+12,-(sp)
  55.     SX    __GMLine,4
  56. *****
  57.     move.l    #0*$10000+159,-(sp)
  58.     SX    __GMMove,4
  59.  
  60.     move.w    #G_FORE*$100+G_PSET,-(sp)
  61.     SX    __GMPenMode,2
  62.  
  63.     move.w    #G_BLACK,-(sp)
  64.     SX    __GMForeColor,2
  65.  
  66.     move.l    #WIN_X*$10000+159,-(sp)
  67.     SX    __GMLine,4
  68.  
  69.     move.l    #0*$10000+175,-(sp)
  70.     SX    __GMMove,4
  71.  
  72.     move.l    #WIN_X*$10000+175,-(sp)
  73.     SX    __GMLine,4
  74.  
  75.     move.l    #0*$10000+13,-(sp)
  76.     SX    __GMMove,4
  77.  
  78.     move.l    #WIN_X*$10000+13,-(sp)
  79.     SX    __GMLine,4
  80.  
  81. *****
  82.     move.l    #4*$10000,-(sp)
  83.     SX    __GMMove,4
  84.  
  85.     pea.l    b6_ttl(pc)
  86.     SX    __GMDrawStrZ,4
  87.  
  88.  
  89.  
  90.     move.l    #4*$10000+161,-(sp)
  91.     SX    __GMMove,4
  92.  
  93.     pea.l    b4_ttl(pc)
  94.     SX    __GMDrawStrZ,4
  95.  
  96. ~T
  97. rts
  98. prgfill:    dc.w    28,161,WIN_X,161+12
  99. .even
  100.  
  101. DrawWin2::
  102.     move.l    #4*$10000+161,-(sp)
  103.     SX    __GMMove,4
  104.  
  105.     pea.l    b4_ttl(pc)
  106.     SX    __GMDrawStrZ,4
  107.  
  108.     move.w    #G_LGRAY,-(sp)
  109.     SX    __GMForeColor,2
  110.  
  111.     pea    prgfill(pc)
  112.     SX    __GMFillRect,4
  113.  
  114.     move.w    #G_BLACK,-(sp)
  115.     SX    __GMForeColor,2
  116.  
  117.     move.l    #28*$10000+161,-(sp)
  118.     SX    __GMMove,4
  119.  
  120.     move.l    PrgHdl(a5),-(sp)
  121.     SX    __MMHdlLock,4
  122.  
  123.     bsr    makestr
  124.  
  125.     HDL2PTR    PrgHdl(a5),a1
  126.     move.w    (a1),d0
  127.  
  128.     lsl.w    #2,d0
  129.     ifge    <cmp.w    #40,d0>
  130.         move.w    #40,d0
  131.     endif
  132.     move.w    d0,-(sp)
  133.     move.l    PrgstrPtr(a5),-(sp)    *offset
  134.     pea    Prgstr(a5)
  135.     SX    __GMDrawStr,10
  136.  
  137.     move.l    PrgHdl(a5),-(sp)
  138.     SX    __MMHdlUnlock,4
  139.     ~T
  140.     rts
  141.  
  142. *==============================================*
  143. makestr:
  144. movem.l    d1-d3/a1-a2,-(sp)
  145.  
  146.  
  147.     HDL2PTR    PrgHdl(a5),a1
  148.     moveq    #0,d1
  149.     move.l    d1,d2
  150.     move.l    d1,d3
  151. *    move.l    #400-1,d3
  152.     move.w    (a1),d3
  153.     addq.w    #1,d3
  154.     lea.l    2(a1),a1
  155.     lea.l    Prgstr(a5),a2
  156.  
  157. @@:
  158.     move.b    (a1),d1
  159.     movem.l    d1-d3/a1-a4,-(sp)
  160.         move.l    #3,-(sp)    *max桁
  161.         move.l    d1,-(sp)    *num
  162.         pea    (a2)        *
  163.         SXSUB    _ULUsingL,12
  164.     movem.l    (sp)+,d1-d3/a1-a4
  165.  
  166.     move.b    #':',3(a2)
  167.     addq.l    #1,a1
  168.     addq.l    #4,a2
  169.     dbra    d3,@b
  170.  
  171. movem.l    (sp)+,d1-d3/a1-a2
  172. ~T
  173. rts
  174. *==============================================*
  175. InitGraph::
  176.     SETPORT3    winPtr(a5)
  177.  
  178.     move.w    #%0111,-(sp)
  179.     SX    __GMAPage,2
  180.  
  181.     move.w    #G_BLACK,-(sp)
  182.     SX    __GMForeColor,2
  183.  
  184.     move.w    #G_LGRAY,-(sp)
  185.     SX    __GMBackColor,2
  186.  
  187.     rts
  188. *==============================================*
  189.  
  190. *==============================================*
  191. CtrlInitproc::
  192.  
  193. *    move.l    #200*ttllngs,-(sp)
  194.     move.l    TRACKmax(a5),d0
  195.     move.l    #ttllngs,d1
  196.     mulu.w    d1,d0
  197.     move.l    d0,-(sp)
  198.     SX    __MMChHdlNew,4
  199.     move.l    d0,TtlHdl(a5)
  200.     beq    IC_err
  201.  
  202. *    move.l    #102,-(sp)
  203. *    SX    __MMChHdlNew,4
  204. *    move.l    d0,PrgHdl(a5)
  205. *    beq    IC_err
  206.  
  207. *    CDC    _CDC_PROG        *CDCからのPRG読み込み
  208. *    move.l    d0,a0
  209. *    HDL2PTR    PrgHdl(a5),a1
  210. *    move.l    #25-1,d0
  211. *@@:
  212. *    move.l    (a0)+,(a1)+
  213. *    dbra    d0,@b
  214. *    move.w    (a0),(a1)
  215.  
  216. *    CDC    _CDC_PROG
  217. *    move.l    d0,a0
  218.  
  219.     bsr    TtlHdlInit        *リスト前処理(リストなくても構わないように)
  220.  
  221.  
  222. *InitCtrl:
  223.     pea.l    SCROLLKey(pc)
  224.     move.w    #10,-(sp)        *yline
  225.     move.w    #ttllngs,-(sp)        *chr2
  226.     move.w    #ttllngs,-(sp)        *chr
  227.     move.w    #8,-(sp)        *x1
  228.     move.w    #16,-(sp)        *yy
  229.     move.w    #1,-(sp)        *scrline
  230.     move.w    #14,-(sp)        *fontline
  231.     move.w    #12,-(sp)        *fontsize
  232.     Xpea    winPtr(a5)        *
  233.     move.l    #0,-(sp)    *pea    0.w    *LOCAL座標(初期化時意味なし)
  234.     move.l    TtlHdl(a5),-(sp)
  235. *    pea.l    TtlHdl(a5)        *STRHDL(文字列格納ハンドル)
  236.     move.l    Ttlargc(a5),-(sp)    *ハンドル内のASCIIZ文字列の個数
  237.     pea.l    Sc1work(a5)        *スクロール管理構造体のアドレス
  238.     move.w    #0,-(sp)        *コマンド番号
  239.     SXSUB    ScrProc,42            *生成
  240.  
  241.  
  242.  
  243.     move.l    #0,-(sp)    *pea.l    0.w
  244.     move.w    #CI_CHRBTN*16,-(sp)
  245.     move.w    #1,-(sp)            *max
  246.     move.w    #0,-(sp)            *min(0に固定)
  247.     move.w    #0,-(sp)            *初期値
  248.     move.w    #-1,-(sp)            *可視
  249.     pea.l    b1_ttl(pc)
  250.     pea.l    b1_loc(pc)
  251.     Xpea    winPtr(a5)
  252.     SX    __CMOpen,26
  253.     move.l    a0,b1Hdl(a5)            *cHdl
  254.  
  255.     move.l    #0,-(sp)    *pea.l    0.w
  256.     move.w    #CI_CHRBTN*16,-(sp)
  257.     move.w    #1,-(sp)            *max
  258.     move.w    #0,-(sp)            *min(0に固定)
  259.     move.w    #0,-(sp)            *初期値
  260.     move.w    #-1,-(sp)            *可視
  261.     pea.l    b2_ttl(pc)
  262.     pea.l    b2_loc(pc)
  263.     Xpea    winPtr(a5)
  264.     SX    __CMOpen,26
  265.     move.l    a0,b2Hdl(a5)            *cHdl
  266.  
  267.     move.l    #0,-(sp)    *pea.l    0.w
  268.     move.w    #CI_CHRBTN*16,-(sp)
  269.     move.w    #1,-(sp)            *max
  270.     move.w    #0,-(sp)            *min(0に固定)
  271.     move.w    #0,-(sp)            *初期値
  272.     move.w    #-1,-(sp)            *可視
  273.     pea.l    b3_ttl(pc)
  274.     pea.l    b3_loc(pc)
  275.     Xpea    winPtr(a5)
  276.     SX    __CMOpen,26
  277.     move.l    a0,b3Hdl(a5)            *cHdl
  278.  
  279.     move.l    #0,-(sp)    *pea.l    0.w
  280.     move.w    #CI_CHRBTN*16,-(sp)
  281.     move.w    #1,-(sp)            *max
  282.     move.w    #0,-(sp)            *min(0に固定)
  283.     move.w    #0,-(sp)            *初期値
  284.     move.w    #-1,-(sp)            *可視
  285.     pea.l    b5_ttl(pc)
  286.     pea.l    b5_loc(pc)
  287.     Xpea    winPtr(a5)
  288.     SX    __CMOpen,26
  289.     move.l    a0,b5Hdl(a5)            *cHdl
  290.  
  291.         ~T
  292.         rts
  293.  
  294. IC_err:
  295.         ~F
  296.         rts
  297.  
  298. SCROLLKey:    *LINEUP,LINEDOWN,PAGEUP,PAGEDOWN
  299.     dc.l    $003E0006,$003C0001,$00380005,$00390017
  300.  
  301. by1    =    178
  302. by2    =    by1+18
  303. bx    =    64
  304. 間    =    8
  305. b1_ttl:    LASCIIZ    'ダイレクト演奏'
  306. b2_ttl:    LASCIIZ    'PRG 曲送信'
  307. b3_ttl:    LASCIIZ    'PRG1曲消去'
  308. b5_ttl:    LASCIIZ    'PRG 全消去'
  309. b4_ttl:    dc.b    'PRG|',0
  310. .even
  311. b6_ttl:    dc.b    'TrackNo.             Title',0
  312. .even
  313. b1_loc:    dc.w    4,by1,4+bx,by2
  314. b3_loc:    dc.w    4+bx+間,by1,4+bx*2+間,by2
  315. b5_loc:    dc.w    4+bx*2+間*2,by1,4+bx*3+間*2,by2
  316. b2_loc:    dc.w    4+bx*3+間*3,by1,4+bx*4+間*3,by2
  317. .text
  318.  
  319.  
  320. *==============================================*
  321. TtlHdlInit::
  322.  
  323.     movem.l    a1-a4,-(sp)
  324.  
  325.     move.l    TtlHdl(a5),-(sp)
  326.     SX    __MMHdlLock,4
  327.  
  328.     movem.l    d1-d2/a1,-(sp)
  329.  
  330.     move.w    #' ',-(sp)
  331.     move.l    TtlHdl(a5),-(sp)
  332.     SXSUB    FillHdl,6        *全てスペースで埋める
  333.  
  334.     moveq    #1,d1
  335.     HDL2PTR    TtlHdl(a5),a1
  336.     move.l    TRACKmax(a5),d2
  337.     subq.l    #1,d2
  338.  
  339.     for    d2,<>
  340.  
  341. *  void ULUsingL( char *str, int num, int max );
  342. .xref    _ULUsingL
  343.  
  344.         movem.l    d1-d3/a1-a4,-(sp)
  345.         move.l    #3,-(sp)
  346.         move.l    d1,-(sp)
  347.         pea    2(a1)
  348.         SXSUB    _ULUsingL,12
  349.  
  350.         movem.l    (sp)+,d1-d3/a1-a4
  351.                         *UsingLで返ってくるのが
  352.         move.b    #' ',5(a1)        *ASCIIZなので、0を取り除く
  353.         adda.l    #ttllngs-1,a1
  354.         move.b    #0,(a1)+
  355.         addq.l    #1,d1
  356.     next
  357.  
  358.     movem.l    (sp)+,d1-d2/a1
  359.  
  360.     CDC    _CDC_TRACKS
  361.     move.l    d0,a1
  362.  
  363.     ifne    <tst.w    (a1)>
  364.         move.l    6(a1),d0
  365.         subq.l    #1,d0
  366.         move.l    d0,Ttlargc(a5)
  367.         ifeq    <cmpi.l    #1,14(a1)>
  368.             lea.l    58+40(a1),a1
  369.             HDL2PTR    TtlHdl(a5),a2
  370.             move.l    Ttlargc(a5),d1
  371.             for    d1,<>
  372.                 lea    7(a2),a3    *dst
  373.                 lea    (a1),a4        *src
  374. @@:
  375.                     move.b    (a4)+,(a3)+
  376.                     tst.b    (a4)
  377.                     bne    @b
  378.                 adda.l    #ttllngs,a2
  379.                 adda.l    #40,a1
  380.             next
  381.         endif
  382.     else
  383.         move.l    #-1,Ttlargc(a5)
  384.     endif
  385.  
  386.     move.l    TtlHdl(a5),-(sp)
  387.     SX    __MMHdlUnlock,4
  388.  
  389.     movem.l    (sp)+,a1-a4
  390.  
  391.     rts
  392.  
  393.  
  394. *==============================================*
  395. CtrlTiniproc::
  396.         pea.l    Sc1work(a5)
  397.         move.w    #3,-(sp)        *廃棄
  398.         SXSUB    ScrProc,6
  399.  
  400.         Xpea    winPtr(a5)
  401.         SX    __CMKill,4
  402.  
  403.         move.l    TtlHdl(a5),-(sp)
  404.         SX    __MMHdlDispose,4
  405.  
  406. *        move.l    PrgHdl(a5),-(sp)
  407. *        SX    __MMHdlDispose,4
  408.  
  409.  
  410. ~T
  411. rts
  412. *==============================================*
  413. *メインウィンドウを外部に作った場合も、winPtr
  414. *をウィンドウレコードにする
  415. *今回は呼ばれていません
  416. *==============================================*
  417. *InitWin::
  418.  
  419.         move.l    winRect(a5),d0
  420.         move.w    paramFlg(a5),d1
  421.         btst    #0,d1                *'-W'オプションが指定された?
  422.         beq    _POS0                *されなかったら_POS0へ
  423.  
  424.         bra    _POS1                *X2がX1より小さいか同じ
  425. _POS0:
  426.         SX    __TSGetWindowPos,0
  427.         move.l    d0,winRect(a5)            *デフォルト位置を得る
  428. _POS1:
  429.         add.l    #WIN_X*$10000+WIN_Y,d0        *ウィンドウレクタングルを作成
  430.         move.l    d0,winRect+4(a5)
  431. _POS2:
  432.  
  433.         move.l    taskID(a5),-(sp)    *タスクID
  434.         move.w    #TRUE,-(sp)        *クローズボックスあり
  435.         move.l    #TRUE,-(sp)        *手前に
  436.         move.w    #_WDEF_NUM*16+WINOPT,-(sp)    
  437.  
  438.         move.w    #TRUE,-(sp)        *可視
  439.         pea.l    WINTITLE(pc)        *LASCII
  440.         pea.l    winRect(a5)        *ウィンドウレクタングル
  441. .if    WINTYPE='H'
  442.         Xpea    winPtr(a5)        *ワーク上に作成
  443. .else
  444. .if    WINTYPE='P'
  445.         pea.l    0.w            *ヒープ上に作成
  446. .endif
  447. .endif
  448.         SX    __WMOpen,26
  449.         tst.l    d0            *エラー?
  450.         bmi    Win_init_ERR        *ならば_INIT_Errへ
  451.         move.w    #-1,winActive(a5)        *アクティブフラグをセット
  452. .if    WINTYPE='P'
  453.         move.l    a0,winPtr(a5)        *winPtrをヒープに確保させた時
  454. .endif
  455.         SETPORT3 winPtr(a5)
  456.         jbsr    InitGraph        *このウィンドウのグラフポートの初期設定
  457.  
  458.     ~T
  459.     rts
  460. Win_init_ERR:
  461.         ~F
  462.         rts
  463. WINTITLE:
  464.         MAINWIN_NAME
  465. .even
  466.